package com.skeyedu.mail;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;

/**
 * @Description 描述
 * @Author 羽落陌殇
 * @Date 2021/7/22 8:34
 * @Version 1.0.0
 */
public class MailDemo02 {
    public static void main(String[] args) throws MessagingException {
        Properties properties = new Properties();
        properties.setProperty("mail.host", "smtp.yeah.net"); // 设置网易邮件服务器
        properties.setProperty("mail.transport.protocol", "smtp"); // 设置邮件发送协议
        properties.setProperty("mail.smtp.auth", "true"); // 设置需要验证用户名和密码

        // 创建JavaMail的五个步骤
        // 1、创建定义整个应用程序所需的环境信息的Session对象
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("yuluomoshang@yeah.net", "ELHVYDDOWQWKOQLT");
            }
        });

        // 2、通过 Session 获取 Transport 对象
        Transport transport = session.getTransport();

        // 3、使用邮箱的用户名和授权码连接上邮箱服务器
        transport.connect("smtp.yeah.net", "yuluomoshang@yeah.net", "ELHVYDDOWQWKOQLT");

        // 4、创建邮件
        Message message = new MimeMessage(session);
        // 发件人
        message.setFrom(new InternetAddress("yuluomoshang@yeah.net"));
        // 邮件标题
        message.setSubject("欢迎进入图片邮件学习");
        // 收件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("1971636824@qq.com"));

        // 准备图片数据
        MimeBodyPart image = new MimeBodyPart();
        // 图片需要经过数据处理
        DataHandler dh = new DataHandler(new FileDataSource("D:\\Software\\Lessons\\Servlet_Day09_Mail\\src\\main\\resources\\bz.png"));
        image.setDataHandler(dh);
        // 给图片设置一个ID, 我们在后面邮件信息中时候用
        image.setContentID("bz.png");

        // 准备正文数据
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("这是一邮件, 正文带图片 <img src='cid:bz.png'/> 的邮件", "text/html; charset=UTF-8");
        // 描述数据关系
        MimeMultipart mm = new MimeMultipart();
        mm.addBodyPart(text);
        mm.addBodyPart(image);
        mm.setSubType("related"); // related mixed
        // 设置到信息中, 保存修改
        message.setContent(mm);
        message.saveChanges();

        // 5、发送邮件
        transport.sendMessage(message, message.getAllRecipients());
        // 6、关闭连接
        transport.close();
    }
}
